var db, idTimeout, audio;


/*
    функция перевода времени
*/ 
function parseDate (i) {
    var str = "", myDate = new Date();
    i = new Date(i);

    if (i.getFullYear() === myDate.getFullYear() && i.getMonth() === myDate.getMonth()) {
        if (i.getDate() === myDate.getDate()) {
            str = "\u0421\u0435\u0433\u043e\u0434\u043d\u044f"; // сегодня
        } else if ((i.getDate() + 1) === myDate.getDate()) {
            str = "\u0412\u0447\u0435\u0440\u0430"; // Вчера
        }
    }

    if (str === "") {
        // Или показать дату
        str = i.getFullYear()
            + "." +
            (i.getMonth() + 1 > 9 ? i.getMonth() + 1 : "0" + (i.getMonth() + 1)) // формат 06 месяца
            + "." +
            (i.getDate() > 9 ? i.getDate() : "0" + i.getDate()); // Аналогично
    }

    return str + " " + (i.getHours() > 9 ? i.getHours() : "0" + i.getHours()) + ":" + (i.getMinutes() > 9 ? i.getMinutes() : "0" + i.getMinutes());
}


function intval (mixed_var, base) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: stensi
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   input by: Matteo
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Rafał Kukawski (http://kukawski.pl)
    // *     example 1: intval('Kevin van Zonneveld');
    // *     returns 1: 0
    // *     example 2: intval(4.2);
    // *     returns 2: 4
    // *     example 3: intval(42, 8);
    // *     returns 3: 42
    // *     example 4: intval('09');
    // *     returns 4: 9
    // *     example 5: intval('1e', 16);
    // *     returns 5: 30
    var tmp, type = typeof(mixed_var);

    if (type === 'boolean') {
        return +mixed_var;
    } else if (type === 'string') {
        tmp = parseInt(mixed_var, base || 10);
        return (isNaN(tmp) || !isFinite(tmp)) ? 0 : tmp;
    } else if (type === 'number' && isFinite(mixed_var)) {
        return mixed_var | 0;
    } else {
        return 0;
    }
}


function getForum () {
    var data = [];

    for (var i = 3; i <= 7; i++) {
        data[i] = {
           'last_post_time' : localStorage['forum[' + i + '][last_post_time]'],
           'last_post_id'   : localStorage['forum[' + i + '][last_post_id]'],
           'last_poster'    : localStorage['forum[' + i + '][last_poster]'],
           'subject'        : localStorage['forum[' + i + '][subject]'],
           'icon'           : localStorage['forum[' + i + '][icon]']
        };
    }

    return data;
}


function saveForum () {
    for (var i in db) {
        localStorage['forum[' + i + '][last_post_time]'] = db[i]['last_post_time'];
        localStorage['forum[' + i + '][last_post_id]']   = db[i]['last_post_id'];
        localStorage['forum[' + i + '][last_poster]']    = db[i]['last_poster'];
        localStorage['forum[' + i + '][subject]']        = db[i]['subject'];
        localStorage['forum[' + i + '][icon]']           = db[i]['icon'];
    }
}


function connect (a) {
    if (!a) { // Если вызывается с попы
        reload.active();
    } else { // Если с background
        db = getForum(); // обновляем данные с базы. (Если менялись в попе)
    }

    clearTimeout(idTimeout); // Удаляем сушестующий тайм
    $.getJSON('http://wapinet.ru/forum/ajax.server.php?informer&method=getForums', function (arr) {
        if (!a) { // Если с попы
            reload.off(); // Включаем крутилку
        }
        if (arr.status === true) {
            var play = false;

            for (var i in arr.data) {
                db[i]['last_post_id']   = arr.data[i]['last_post_id'];
                db[i]['last_poster']    = arr.data[i]['last_poster'];
                db[i]['subject']        = arr.data[i]['subject'];

                if (arr.data[i]['last_poster'] === setting.nick) { // Если автор юзер не мигаем иконкой возле форума
                    db[i]['icon']   = false;
                } else if (intval(db[i]['last_post_time']) < arr.data[i]['last_post_time']) { // Если не автор тогда проверяем время
                    db[i]['icon']   = true; // отличается мигаем дабы показать где новые
                    play  = true; // Надо уведомить
                    if (a) { // Если через background
                        blink.start('forum', arr.data[i]['last_post_id'], arr.data[i]['subject']);
                    }
                }
                db[i]['last_post_time'] = arr.data[i]['last_post_time'];
            }

            if (play === true) {
                 audio.play(); // Играем звук
            }
            saveForum(); 
            db = getForum();
            if (!a) {
                viewForum(); // Если с попы тогда обновляем дом
            }
        }
    }).complete(function () {
        if (a && (setting.reload * 10)) {
            idTimeout = setTimeout('connect(1)', (setting.reload * 60000));
        }
    });
}